পয়েন্টার দিয়ে অ্যারে অ্যাক্সেস করার মাধ্যমে অ্যারের উপাদানগুলোতে পয়েন্টারের সাহায্যে কাজ করা সম্ভব হয়। C++ এ পয়েন্টার এবং অ্যারে ঘনিষ্ঠভাবে সম্পর্কিত, কারণ অ্যারের নাম নিজেই প্রথম উপাদানের মেমোরি অ্যাড্রেস নির্দেশ করে। ফলে অ্যারের প্রথম উপাদানের ঠিকানা পয়েন্টার হিসেবে ব্যবহার করে অ্যারের সমস্ত উপাদান অ্যাক্সেস করা যায়।
ধরা যাক আমাদের একটি পূর্ণসংখ্যার অ্যারে আছে:
int numbers[5] = {10, 20, 30, 40, 50};
এখানে numbers
নিজেই একটি পয়েন্টার হিসেবে কাজ করে এবং অ্যারের প্রথম উপাদানের ঠিকানা ধারণ করে। পয়েন্টার ব্যবহার করে অ্যারের প্রতিটি উপাদান অ্যাক্সেস করা সম্ভব।
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
int *ptr = numbers; // numbers এর প্রথম উপাদানের ঠিকানা ptr এ রাখা হয়েছে
// পয়েন্টার ব্যবহার করে অ্যারের প্রতিটি উপাদান অ্যাক্সেস
for (int i = 0; i < 5; i++) {
cout << "Element at index " << i << ": " << *(ptr + i) << endl;
}
return 0;
}
বর্ণনা:
ptr
নামের একটি পয়েন্টার ভ্যারিয়েবল তৈরি করা হয়েছে, যা numbers
অ্যারের প্রথম উপাদানের ঠিকানা ধারণ করছে।*(ptr + i)
ব্যবহার করে প্রতিটি উপাদান অ্যাক্সেস করা হয়েছে, যেখানে ptr + i
অ্যারের প্রতিটি উপাদানের ঠিকানা নির্দেশ করে এবং *
অপারেটর ব্যবহার করে সেই ঠিকানার মান অ্যাক্সেস করা হয়েছে।১. numbers
অ্যারে নাম নিজেই প্রথম উপাদানের ঠিকানা নির্দেশ করে।
int *ptr = numbers; // numbers[0] এর ঠিকানা
২. ইনডেক্সিং এবং পয়েন্টার অ্যারিথমেটিকস সমতুল্য:
numbers[i]
এর মান *(numbers + i)
এর সমান।int value = numbers[2]; // ইনডেক্সিং ব্যবহার করে তৃতীয় উপাদান অ্যাক্সেস
int value2 = *(numbers + 2); // পয়েন্টার ব্যবহার করে তৃতীয় উপাদান অ্যাক্সেস
পয়েন্টার ব্যবহার করে অ্যারের উপাদানগুলোর মান পরিবর্তন করা যায়।
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
int *ptr = numbers;
// পয়েন্টার ব্যবহার করে অ্যারের মান পরিবর্তন
for (int i = 0; i < 5; i++) {
*(ptr + i) += 10; // প্রতিটি উপাদানে ১০ যোগ করা
}
// পরিবর্তিত অ্যারে প্রিন্ট করা
for (int i = 0; i < 5; i++) {
cout << "Element at index " << i << ": " << numbers[i] << endl;
}
return 0;
}
বর্ণনা:
10
যোগ করা হয়েছে *(ptr + i) += 10
স্টেটমেন্টের মাধ্যমে।numbers
অ্যারের প্রতিটি উপাদান প্রিন্ট করা হয়েছে, যা পয়েন্টার ব্যবহার করে আপডেট করা হয়েছে।C++ এ মাল্টি-ডাইমেনশনাল অ্যারে (যেমন ২-মাত্রিক অ্যারে) পয়েন্টার দিয়ে অ্যাক্সেস করা সম্ভব। একটি ২-মাত্রিক অ্যারে মানে হলো অ্যারের মধ্যে অ্যারে রয়েছে।
#include <iostream>
using namespace std;
int main() {
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*ptr)[3] = matrix; // প্রতিটি সাব-অ্যারে একটি পয়েন্টার
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
cout << "Element at [" << i << "][" << j << "]: " << *(*(ptr + i) + j) << endl;
}
}
return 0;
}
বর্ণনা:
matrix
২-মাত্রিক অ্যারের প্রতিটি সাব-অ্যারে ptr
পয়েন্টারের মাধ্যমে অ্যাক্সেস করা হয়েছে।*(*(ptr + i) + j)
এর মাধ্যমে matrix[i][j]
এর মান অ্যাক্সেস করা হয়েছে।*(ptr + i)
পদ্ধতিতে প্রতিটি অ্যারের উপাদান অ্যাক্সেস করা সম্ভব।এই পদ্ধতির মাধ্যমে প্রোগ্রামে মেমোরি ব্যবস্থাপনা সহজতর হয় এবং কোড আরও কার্যকরী ও দক্ষ হয়।
common.read_more